package com.dtx.bridge;

/**
 * BridgeMain类将上述4个类组合起来显式字符串。虽然变量d1中保存的是Display类的实例,而变量d2和d3中保存的是
 * CountDisplay类的实例,但它们内部都保存着StringDisplayImpl类的实例。
 * 由于d1,d2,d3都属于Display类的实例,因此我们可以调用它们的display方法。此外,我们还可以调用d3的multiDisplay方法。
 *
 * +-------------+
 * |Hello, China.|      显式d1.display()的结果
 * +-------------+
 * +-------------+
 * |Hello, World.|      显式d2.display()的结果
 * +-------------+
 * +---------------+
 * |Hello, Universe|    显式d3.display()的结果
 * +---------------+
 * +---------------+
 * |Hello, Universe|    显式d3.multiDisplay(5)的结果
 * |Hello, Universe|
 * |Hello, Universe|
 * |Hello, Universe|
 * |Hello, Universe|
 * +---------------+
 */
public class BridgeMain {

    public static void main(String[] args) {
        Display d1 = new Display(new StringDisplayImpl("Hello, China."));
        Display d2 = new CountDisplay(new StringDisplayImpl("Hello, World."));
        CountDisplay d3 = new CountDisplay(new StringDisplayImpl("Hello, Universe"));

        d1.display();
        d2.display();
        d3.display();
        d3.multiDisplay(5);
    }
}
